package study.core.rdd.operator

import org.apache.spark.rdd.RDD
import org.apache.spark.{HashPartitioner, SparkConf, SparkContext}

/**
 * 转换算子之键值操作partitionBy操作
 * 将数据按照指定 Partitioner 重新进行分区
 *
 * @author zh
 * @date 2021/5/15 10:47
 */
object TestPartitionBy {
  def main(args: Array[String]): Unit = {
    val sparkConf = new SparkConf().setMaster("local[*]").setAppName("rddMap")
    val context = new SparkContext(sparkConf)

    // 准备集合
    val list = List(1, 2, 3, 4)
    // 创建RDD
    val rdd: RDD[Int] = context.makeRDD(list, 2)

    // 将原本的数据转为K-V类型的
    val mapRdd = rdd.map((_, null))
    // 分区
    val result = mapRdd.partitionBy(new HashPartitioner(2))
    result.saveAsTextFile("output")

    context.stop()


  }

}
